home *** CD-ROM | disk | FTP | other *** search
/ PC-X 1997 October / pcx14_9710.iso / swag / delphi.swg / 0166_Detect whether a drive exists or not?.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1996-08-30  |  1.4 KB  |  54 lines

  1.  
  2. function DoesDriveExist(DriveLetter: char): string;
  3. var i: integer;
  4. begin
  5.   if DriveLetter in ['A'..'Z'] then {Make it lower case.}
  6.     DriveLetter := chr(ord(DriveLetter) or $20);
  7.   i := GetDriveType(ord(DriveLetter) - ord('a'));
  8.   case i of
  9.     DRIVE_REMOVABLE: result := 'floppy';
  10.     DRIVE_FIXED: result := 'hard disk';
  11.     DRIVE_REMOTE: result := 'network drive';
  12.     else result := 'does not exist';
  13.   end;
  14. end;
  15.  
  16. function DoesDriveExist(DriveLetter: char): boolean;
  17.  
  18. var
  19.   drives: TDriveComboBox;
  20.   i: integer;
  21. begin
  22.   result := false;
  23.   drives := TDriveComboBox.create(application);
  24.   drives.parent := form1;
  25.   form1.listbox1.items := drives.items;
  26.   for i := drives.items.count - 1 downto 0 do {Note: this is case sensitive: lower case.}
  27.     if drives.items.strings[i][1] = DriveLetter then result := true;
  28.   drives.free; {...so that the combobox doesn't show.}
  29. end;
  30.  
  31. Also, DiskFree() will return -1 if the drive does not exist.
  32.  
  33. Neil Rubenking wrote this code --
  34.  
  35. function DirExists(const S : String): Boolean;
  36. VAR
  37.   OldMode : Word;
  38.   OldDir  : String;
  39.  
  40. BEGIN
  41.   Result := True;
  42.   GetDir(0, OldDir); {save old dir for return}
  43.   OldMode := SetErrorMode(SEM_FAILCRITICALERRORS); {if drive empty, except}
  44.   try try
  45.     ChDir(S);
  46.   except
  47.     ON EInOutError DO Result := False;
  48.   end;
  49.   finally
  50.     ChDir(OldDir); {return to old dir}
  51.     SetErrorMode(OldMode); {restore old error mode}
  52.   end;
  53. END;
  54.